using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._LocationReferencingTools._Configuration._LRSEvent
{
    /// <summary>
    /// <para>Modify Event Behavior Rules</para>
    /// <para>Modifies event behavior rules for the registered event  layer or feature class.</para>
    /// <para>修改已注册事件图层或要素类的事件行为规则。</para>
    /// </summary>    
    [DisplayName("Modify Event Behavior Rules")]
    public class ModifyEventBehaviorRules : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ModifyEventBehaviorRules()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_feature_class">
        /// <para>Event Feature Class</para>
        /// <para>The event feature class.</para>
        /// <para>事件要素类。</para>
        /// </param>
        public ModifyEventBehaviorRules(object _in_feature_class)
        {
            this._in_feature_class = _in_feature_class;
        }
        public override string ToolboxName => "Location Referencing Tools";

        public override string ToolName => "Modify Event Behavior Rules";

        public override string CallName => "locref.ModifyEventBehaviorRules";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_feature_class, _calibrate_rule.GetGPValue(), _retire_rule.GetGPValue(), _extend_rule.GetGPValue(), _reassign_rule.GetGPValue(), _realign_rule.GetGPValue(), _out_feature_class];

        /// <summary>
        /// <para>Event Feature Class</para>
        /// <para>The event feature class.</para>
        /// <para>事件要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Event Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_feature_class { get; set; }


        /// <summary>
        /// <para>Calibrate Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule defined for the calibrate activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire—Both measure and geographic location are preserved; the event is retired.</bullet_item><para/>
        ///     <bullet_item>Move—The measures of the event are preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定为校准活动定义的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 将保留度量值和地理位置;该事件已停用。</bullet_item><para/>
        ///     <bullet_item>移动 - 保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Calibrate Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _calibrate_rule_value? _calibrate_rule { get; set; } = null;

        public enum _calibrate_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</para>
            /// <para>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire—Both measure and geographic location are preserved; the event is retired.</para>
            /// <para>停用 - 将保留度量值和地理位置;该事件已停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move—The measures of the event are preserved; the geographic location may change.</para>
            /// <para>移动 - 保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Retire Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule defined for the retire activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire—Both measure and geographic location are preserved; the event is retired.</bullet_item><para/>
        ///     <bullet_item>Move—The measures of the event are preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定为停用活动定义的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 将保留度量值和地理位置;该事件已停用。</bullet_item><para/>
        ///     <bullet_item>移动 - 保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Retire Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _retire_rule_value? _retire_rule { get; set; } = null;

        public enum _retire_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</para>
            /// <para>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire—Both measure and geographic location are preserved; the event is retired.</para>
            /// <para>停用 - 将保留度量值和地理位置;该事件已停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move—The measures of the event are preserved; the geographic location may change.</para>
            /// <para>移动 - 保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Extend Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule defined for the extend activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire—Both measure and geographic location are preserved; the event is retired.</bullet_item><para/>
        ///     <bullet_item>Move—The measures of the event are preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定为扩展活动定义的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 将保留度量值和地理位置;该事件已停用。</bullet_item><para/>
        ///     <bullet_item>移动 - 保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Extend Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _extend_rule_value? _extend_rule { get; set; } = null;

        public enum _extend_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</para>
            /// <para>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire—Both measure and geographic location are preserved; the event is retired.</para>
            /// <para>停用 - 将保留度量值和地理位置;该事件已停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move—The measures of the event are preserved; the geographic location may change.</para>
            /// <para>移动 - 保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Reassign Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule defined for the reassign activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire—Both measure and geographic location are preserved; the event is retired.</bullet_item><para/>
        ///     <bullet_item>Move—The measures of the event are preserved; the geographic location may change.</bullet_item><para/>
        ///     <bullet_item>Snap—The geographic location of an event is preserved by snapping the event to a concurrent route; the measures may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定为重新分配活动定义的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 将保留度量值和地理位置;该事件已停用。</bullet_item><para/>
        ///     <bullet_item>移动 - 保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///     <bullet_item>捕捉 - 通过将事件捕捉到并发路由来保留事件的地理位置;这些措施可能会改变。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Reassign Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _reassign_rule_value? _reassign_rule { get; set; } = null;

        public enum _reassign_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</para>
            /// <para>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire—Both measure and geographic location are preserved; the event is retired.</para>
            /// <para>停用 - 将保留度量值和地理位置;该事件已停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move—The measures of the event are preserved; the geographic location may change.</para>
            /// <para>移动 - 保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

            /// <summary>
            /// <para>Snap</para>
            /// <para>Snap—The geographic location of an event is preserved by snapping the event to a concurrent route; the measures may change.</para>
            /// <para>捕捉 - 通过将事件捕捉到并发路由来保留事件的地理位置;这些措施可能会改变。</para>
            /// </summary>
            [Description("Snap")]
            [GPEnumValue("SNAP")]
            _SNAP,

        }

        /// <summary>
        /// <para>Realign Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule defined for the realign activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire—Both measure and geographic location are preserved; the event is retired.</bullet_item><para/>
        ///     <bullet_item>Move—The measures of the event are preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定为重新对齐活动定义的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 将保留度量值和地理位置;该事件已停用。</bullet_item><para/>
        ///     <bullet_item>移动 - 保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Realign Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _realign_rule_value? _realign_rule { get; set; } = null;

        public enum _realign_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put—The geographic location of the event is preserved; measures may change. This is the default.</para>
            /// <para>保持原地 - 保留事件的地理位置;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire—Both measure and geographic location are preserved; the event is retired.</para>
            /// <para>停用 - 将保留度量值和地理位置;该事件已停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move—The measures of the event are preserved; the geographic location may change.</para>
            /// <para>移动 - 保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Updated Input Feature Class</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Input Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_feature_class { get; set; }


        public ModifyEventBehaviorRules SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}